package com.basker.pisces.orm.session;

import org.springframework.transaction.annotation.Isolation;

/**
 * 创建{@link ISqlSession}的工厂接口
 *
 * @author hangwen
 */
public interface ISqlSessionFactory {

    /**
     * 创建链接默认数据库的会话
     *
     * @return
     */
    ISqlSession createSession();

    /**
     * 创建链接默认数据库的会话，并指定事务隔离级别，{@link ISqlSession}的涉及到批量读写的方法都会被spring的事务管理器控制
     *
     * @param transactionIsolation
     * @return
     */
    ISqlSession createSession(Isolation transactionIsolation);

    /**
     * 创建链接指定数据库的会话
     *
     * @return
     */
    ISqlSession createSession(String dataSourceName);

    /**
     * 创建链接指定数据库的会话，并指定事务隔离级别，{@link ISqlSession}的涉及到批量读写的方法都会被spring的事务管理器控制
     *
     * @return
     */
    ISqlSession createSession(String dataSourceName, Isolation transactionIsolation);
}
